home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / AIncludes / UnicodeConverter.a < prev    next >
Encoding:
Text File  |  1998-08-17  |  12.4 KB  |  341 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        UnicodeConverter.a
  3. ;
  4. ;    Contains:    Types, constants, and prototypes for Unicode Converter
  5. ;
  6. ;    Version:    Technology:    Mac OS 8
  7. ;                Release:    Universal Interfaces 3.2
  8. ;
  9. ;    Copyright:    © 1994-1998 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        For bug reports, consult the following page on
  12. ;                the World Wide Web:
  13. ;
  14. ;                    http://developer.apple.com/bugreporter/
  15. ;
  16. ;
  17.     IF &TYPE('__UNICODECONVERTER__') = 'UNDEFINED' THEN
  18. __UNICODECONVERTER__ SET 1
  19.  
  20.     IF &TYPE('__MACTYPES__') = 'UNDEFINED' THEN
  21.     include 'MacTypes.a'
  22.     ENDIF
  23.     IF &TYPE('__TEXTCOMMON__') = 'UNDEFINED' THEN
  24.     include 'TextCommon.a'
  25.     ENDIF
  26.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  27.     include 'MixedMode.a'
  28.     ENDIF
  29.  
  30. ;  Unicode conversion contexts: 
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37. ;  UnicodeMapVersion type & values 
  38. ; typedef SInt32                         UnicodeMapVersion
  39.  
  40.  
  41. kUnicodeUseLatestMapping        EQU        -1
  42. kUnicodeUseHFSPlusMapping        EQU        4
  43. ;  Types used in conversion 
  44. UnicodeMapping            RECORD 0
  45. unicodeEncoding             ds.l    1                ; offset: $0 (0)
  46. otherEncoding             ds.l    1                ; offset: $4 (4)
  47. mappingVersion             ds.l    1                ; offset: $8 (8)
  48. sizeof                     EQU *                    ; size:   $C (12)
  49.                         ENDR
  50. ; typedef struct UnicodeMapping *        UnicodeMappingPtr
  51.  
  52. ; typedef const struct UnicodeMapping *    ConstUnicodeMappingPtr
  53.  
  54. ;  Control flags for ConvertFromUnicodeToText and ConvertFromTextToUnicode 
  55.  
  56. kUnicodeUseFallbacksBit            EQU        0
  57. kUnicodeKeepInfoBit                EQU        1
  58. kUnicodeDirectionalityBits        EQU        2
  59. kUnicodeVerticalFormBit            EQU        4
  60. kUnicodeLooseMappingsBit        EQU        5
  61. kUnicodeStringUnterminatedBit    EQU        6
  62. kUnicodeTextRunBit                EQU        7
  63. kUnicodeKeepSameEncodingBit        EQU        8
  64. kUnicodeForceASCIIRangeBit        EQU        9
  65. kUnicodeNoHalfwidthCharsBit        EQU        10
  66.  
  67. kUnicodeUseFallbacksMask        EQU        $00000001
  68. kUnicodeKeepInfoMask            EQU        $00000002
  69. kUnicodeDirectionalityMask        EQU        $0000000C
  70. kUnicodeVerticalFormMask        EQU        $00000010
  71. kUnicodeLooseMappingsMask        EQU        $00000020
  72. kUnicodeStringUnterminatedMask    EQU        $00000040
  73. kUnicodeTextRunMask                EQU        $00000080
  74. kUnicodeKeepSameEncodingMask    EQU        $00000100
  75. kUnicodeForceASCIIRangeMask        EQU        $00000200
  76. kUnicodeNoHalfwidthCharsMask    EQU        $00000400
  77. ;  Values for kUnicodeDirectionality field 
  78.  
  79. kUnicodeDefaultDirection        EQU        0
  80. kUnicodeLeftToRight                EQU        1
  81. kUnicodeRightToLeft                EQU        2
  82. ;  Directionality masks for control flags 
  83.  
  84. kUnicodeDefaultDirectionMask    EQU        $00
  85. kUnicodeLeftToRightMask            EQU        $04
  86. kUnicodeRightToLeftMask            EQU        $08
  87. ;  Control flags for TruncateForUnicodeToText: 
  88.  
  89. ;   Now TruncateForUnicodeToText uses control flags from the same set as used by
  90. ;   ConvertFromTextToUnicode, ConvertFromUnicodeToText, etc., but only
  91. ;   kUnicodeStringUnterminatedMask is meaningful for TruncateForUnicodeToText.
  92. ;   
  93. ;   Previously two special control flags were defined for TruncateForUnicodeToText:
  94. ;          kUnicodeTextElementSafeBit = 0
  95. ;          kUnicodeRestartSafeBit = 1
  96. ;   However, neither of these was implemented.
  97. ;   Instead of implementing kUnicodeTextElementSafeBit, we now use
  98. ;   kUnicodeStringUnterminatedMask since it accomplishes the same thing and avoids
  99. ;   having special flags just for TruncateForUnicodeToText
  100. ;   Also, kUnicodeRestartSafeBit is unnecessary, since restart-safeness is handled by
  101. ;   setting kUnicodeKeepInfoBit with ConvertFromUnicodeToText.
  102. ;   If TruncateForUnicodeToText is called with one or both of the old special control
  103. ;   flags set (bits 0 or 1), it will not generate a paramErr, but the old bits have no
  104. ;   effect on its operation.
  105.  
  106.  
  107.  
  108. ;  Filter bits for filter field in QueryUnicodeMappings and CountUnicodeMappings: 
  109.  
  110. kUnicodeMatchUnicodeBaseBit        EQU        0
  111. kUnicodeMatchUnicodeVariantBit    EQU        1
  112. kUnicodeMatchUnicodeFormatBit    EQU        2
  113. kUnicodeMatchOtherBaseBit        EQU        3
  114. kUnicodeMatchOtherVariantBit    EQU        4
  115. kUnicodeMatchOtherFormatBit        EQU        5
  116.  
  117. kUnicodeMatchUnicodeBaseMask    EQU        $00000001
  118. kUnicodeMatchUnicodeVariantMask    EQU        $00000002
  119. kUnicodeMatchUnicodeFormatMask    EQU        $00000004
  120. kUnicodeMatchOtherBaseMask        EQU        $00000008
  121. kUnicodeMatchOtherVariantMask    EQU        $00000010
  122. kUnicodeMatchOtherFormatMask    EQU        $00000020
  123. ;  Control flags for SetFallbackUnicodeToText 
  124.  
  125. kUnicodeFallbackSequencingBits    EQU        0
  126.  
  127. kUnicodeFallbackSequencingMask    EQU        $00000003
  128. ;  values for kUnicodeFallbackSequencing field 
  129.  
  130. kUnicodeFallbackDefaultOnly        EQU        0
  131. kUnicodeFallbackCustomOnly        EQU        1
  132. kUnicodeFallbackDefaultFirst    EQU        2
  133. kUnicodeFallbackCustomFirst        EQU        3
  134.  
  135. ;  Caller-supplied entry point to a fallback handler 
  136. ;  Function prototypes 
  137.     IF GENERATING68K ** ¬ GENERATINGCFM THEN
  138.  
  139. ;      Routine to Initialize the Unicode Converter and cleanup once done with it. 
  140. ;      These routines must be called from Static Library clients.
  141.  
  142.  
  143. ;
  144. ; pascal OSStatus InitializeUnicodeConverter(StringPtr TECFileName)
  145. ;
  146.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  147.         IMPORT_CFM_FUNCTION InitializeUnicodeConverter
  148.     ENDIF
  149.  
  150. ;
  151. ; pascal void TerminateUnicodeConverter(void )
  152. ;
  153.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  154.         IMPORT_CFM_FUNCTION TerminateUnicodeConverter
  155.     ENDIF
  156.  
  157. ;  Note: the old names (InitializeUnicode, TerminateUnicode) for the above are still exported.
  158.     ENDIF
  159. ;
  160. ; pascal OSStatus CreateTextToUnicodeInfo(ConstUnicodeMappingPtr iUnicodeMapping, TextToUnicodeInfo *oTextToUnicodeInfo)
  161. ;
  162.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  163.         IMPORT_CFM_FUNCTION CreateTextToUnicodeInfo
  164.     ENDIF
  165.  
  166. ;
  167. ; pascal OSStatus CreateTextToUnicodeInfoByEncoding(TextEncoding iEncoding, TextToUnicodeInfo *oTextToUnicodeInfo)
  168. ;
  169.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  170.         IMPORT_CFM_FUNCTION CreateTextToUnicodeInfoByEncoding
  171.     ENDIF
  172.  
  173. ;
  174. ; pascal OSStatus CreateUnicodeToTextInfo(ConstUnicodeMappingPtr iUnicodeMapping, UnicodeToTextInfo *oUnicodeToTextInfo)
  175. ;
  176.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  177.         IMPORT_CFM_FUNCTION CreateUnicodeToTextInfo
  178.     ENDIF
  179.  
  180. ;
  181. ; pascal OSStatus CreateUnicodeToTextInfoByEncoding(TextEncoding iEncoding, UnicodeToTextInfo *oUnicodeToTextInfo)
  182. ;
  183.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  184.         IMPORT_CFM_FUNCTION CreateUnicodeToTextInfoByEncoding
  185.     ENDIF
  186.  
  187. ;
  188. ; pascal OSStatus CreateUnicodeToTextRunInfo(ItemCount iNumberOfMappings, const UnicodeMapping iUnicodeMappings[2147483647], UnicodeToTextRunInfo *oUnicodeToTextInfo)
  189. ;
  190.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  191.         IMPORT_CFM_FUNCTION CreateUnicodeToTextRunInfo
  192.     ENDIF
  193.  
  194. ;
  195. ; pascal OSStatus CreateUnicodeToTextRunInfoByEncoding(ItemCount iNumberOfEncodings, const TextEncoding iEncodings[2147483647], UnicodeToTextRunInfo *oUnicodeToTextInfo)
  196. ;
  197.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  198.         IMPORT_CFM_FUNCTION CreateUnicodeToTextRunInfoByEncoding
  199.     ENDIF
  200.  
  201. ;
  202. ; pascal OSStatus CreateUnicodeToTextRunInfoByScriptCode(ItemCount iNumberOfScriptCodes, const ScriptCode iScripts[2147483647], UnicodeToTextRunInfo *oUnicodeToTextInfo)
  203. ;
  204.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  205.         IMPORT_CFM_FUNCTION CreateUnicodeToTextRunInfoByScriptCode
  206.     ENDIF
  207.  
  208. ;  Change the TextToUnicodeInfo to another mapping. 
  209. ;
  210. ; pascal OSStatus ChangeTextToUnicodeInfo(TextToUnicodeInfo ioTextToUnicodeInfo, ConstUnicodeMappingPtr iUnicodeMapping)
  211. ;
  212.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  213.         IMPORT_CFM_FUNCTION ChangeTextToUnicodeInfo
  214.     ENDIF
  215.  
  216. ;  Change the UnicodeToTextInfo to another mapping. 
  217. ;
  218. ; pascal OSStatus ChangeUnicodeToTextInfo(UnicodeToTextInfo ioUnicodeToTextInfo, ConstUnicodeMappingPtr iUnicodeMapping)
  219. ;
  220.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  221.         IMPORT_CFM_FUNCTION ChangeUnicodeToTextInfo
  222.     ENDIF
  223.  
  224.  
  225. ;
  226. ; pascal OSStatus DisposeTextToUnicodeInfo(TextToUnicodeInfo *ioTextToUnicodeInfo)
  227. ;
  228.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  229.         IMPORT_CFM_FUNCTION DisposeTextToUnicodeInfo
  230.     ENDIF
  231.  
  232. ;
  233. ; pascal OSStatus DisposeUnicodeToTextInfo(UnicodeToTextInfo *ioUnicodeToTextInfo)
  234. ;
  235.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  236.         IMPORT_CFM_FUNCTION DisposeUnicodeToTextInfo
  237.     ENDIF
  238.  
  239. ;
  240. ; pascal OSStatus DisposeUnicodeToTextRunInfo(UnicodeToTextRunInfo *ioUnicodeToTextRunInfo)
  241. ;
  242.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  243.         IMPORT_CFM_FUNCTION DisposeUnicodeToTextRunInfo
  244.     ENDIF
  245.  
  246. ;
  247. ; pascal OSStatus ConvertFromTextToUnicode(TextToUnicodeInfo iTextToUnicodeInfo, ByteCount iSourceLen, ConstLogicalAddress iSourceStr, OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[2147483647], ItemCount *oOffsetCount, ByteOffset oOffsetArray[2147483647], ByteCount iOutputBufLen, ByteCount *oSourceRead, ByteCount *oUnicodeLen, UniCharArrayPtr oUnicodeStr)
  248. ;
  249.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  250.         IMPORT_CFM_FUNCTION ConvertFromTextToUnicode
  251.     ENDIF
  252.  
  253. ;
  254. ; pascal OSStatus ConvertFromUnicodeToText(UnicodeToTextInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, ConstUniCharArrayPtr iUnicodeStr, OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[2147483647], ItemCount *oOffsetCount, ByteOffset oOffsetArray[2147483647], ByteCount iOutputBufLen, ByteCount *oInputRead, ByteCount *oOutputLen, LogicalAddress oOutputStr)
  255. ;
  256.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  257.         IMPORT_CFM_FUNCTION ConvertFromUnicodeToText
  258.     ENDIF
  259.  
  260. ;
  261. ; pascal OSStatus ConvertFromUnicodeToTextRun(UnicodeToTextRunInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, ConstUniCharArrayPtr iUnicodeStr, OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[2147483647], ItemCount *oOffsetCount, ByteOffset oOffsetArray[2147483647], ByteCount iOutputBufLen, ByteCount *oInputRead, ByteCount *oOutputLen, LogicalAddress oOutputStr, ItemCount iEncodingRunBufLen, ItemCount *oEncodingRunOutLen, TextEncodingRun oEncodingRuns[2147483647])
  262. ;
  263.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  264.         IMPORT_CFM_FUNCTION ConvertFromUnicodeToTextRun
  265.     ENDIF
  266.  
  267. ;
  268. ; pascal OSStatus ConvertFromUnicodeToScriptCodeRun(UnicodeToTextRunInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, ConstUniCharArrayPtr iUnicodeStr, OptionBits iControlFlags, ItemCount iOffsetCount, ByteOffset iOffsetArray[2147483647], ItemCount *oOffsetCount, ByteOffset oOffsetArray[2147483647], ByteCount iOutputBufLen, ByteCount *oInputRead, ByteCount *oOutputLen, LogicalAddress oOutputStr, ItemCount iScriptRunBufLen, ItemCount *oScriptRunOutLen, ScriptCodeRun oScriptCodeRuns[2147483647])
  269. ;
  270.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  271.         IMPORT_CFM_FUNCTION ConvertFromUnicodeToScriptCodeRun
  272.     ENDIF
  273.  
  274. ;  Truncate a multibyte string at a safe place. 
  275. ;
  276. ; pascal OSStatus TruncateForTextToUnicode(ConstTextToUnicodeInfo iTextToUnicodeInfo, ByteCount iSourceLen, ConstLogicalAddress iSourceStr, ByteCount iMaxLen, ByteCount *oTruncatedLen)
  277. ;
  278.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  279.         IMPORT_CFM_FUNCTION TruncateForTextToUnicode
  280.     ENDIF
  281.  
  282. ;  Truncate a Unicode string at a safe place. 
  283. ;
  284. ; pascal OSStatus TruncateForUnicodeToText(ConstUnicodeToTextInfo iUnicodeToTextInfo, ByteCount iSourceLen, ConstUniCharArrayPtr iSourceStr, OptionBits iControlFlags, ByteCount iMaxLen, ByteCount *oTruncatedLen)
  285. ;
  286.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  287.         IMPORT_CFM_FUNCTION TruncateForUnicodeToText
  288.     ENDIF
  289.  
  290. ;  Convert a Pascal string to Unicode string. 
  291. ;
  292. ; pascal OSStatus ConvertFromPStringToUnicode(TextToUnicodeInfo iTextToUnicodeInfo, ConstStr255Param iPascalStr, ByteCount iOutputBufLen, ByteCount *oUnicodeLen, UniCharArrayPtr oUnicodeStr)
  293. ;
  294.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  295.         IMPORT_CFM_FUNCTION ConvertFromPStringToUnicode
  296.     ENDIF
  297.  
  298. ;  Convert a Unicode string to Pascal string. 
  299. ;
  300. ; pascal OSStatus ConvertFromUnicodeToPString(UnicodeToTextInfo iUnicodeToTextInfo, ByteCount iUnicodeLen, ConstUniCharArrayPtr iUnicodeStr, Str255 oPascalStr)
  301. ;
  302.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  303.         IMPORT_CFM_FUNCTION ConvertFromUnicodeToPString
  304.     ENDIF
  305.  
  306. ;  Count the available conversion mappings. 
  307. ;
  308. ; pascal OSStatus CountUnicodeMappings(OptionBits iFilter, ConstUnicodeMappingPtr iFindMapping, ItemCount *oActualCount)
  309. ;
  310.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  311.         IMPORT_CFM_FUNCTION CountUnicodeMappings
  312.     ENDIF
  313.  
  314. ;  Get a list of the available conversion mappings. 
  315. ;
  316. ; pascal OSStatus QueryUnicodeMappings(OptionBits iFilter, ConstUnicodeMappingPtr iFindMapping, ItemCount iMaxCount, ItemCount *oActualCount, UnicodeMapping oReturnedMappings[2147483647])
  317. ;
  318.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  319.         IMPORT_CFM_FUNCTION QueryUnicodeMappings
  320.     ENDIF
  321.  
  322. ;  Setup the fallback handler for converting Unicode To Text. 
  323. ;
  324. ; pascal OSStatus SetFallbackUnicodeToText(UnicodeToTextInfo iUnicodeToTextInfo, UnicodeToTextFallbackUPP iFallback, OptionBits iControlFlags, LogicalAddress iInfoPtr)
  325. ;
  326.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  327.         IMPORT_CFM_FUNCTION SetFallbackUnicodeToText
  328.     ENDIF
  329.  
  330. ;  Setup the fallback handler for converting Unicode To TextRuns. 
  331. ;
  332. ; pascal OSStatus SetFallbackUnicodeToTextRun(UnicodeToTextRunInfo iUnicodeToTextRunInfo, UnicodeToTextFallbackUPP iFallback, OptionBits iControlFlags, LogicalAddress iInfoPtr)
  333. ;
  334.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  335.         IMPORT_CFM_FUNCTION SetFallbackUnicodeToTextRun
  336.     ENDIF
  337.  
  338.  
  339.     ENDIF ; __UNICODECONVERTER__ 
  340.  
  341.